// --------------------------------------------------------------------------------------------------------------------
// <copyright file="RobotiqSModelFaults.cs" company="Microsoft Corporation">
// The MIT License (MIT)
// 
// Copyright (c) 2014, Microsoft Corporation
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
//  of this software and associated documentation files (the "Software"), to deal
//  in the Software without restriction, including without limitation the rights
//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//  copies of the Software, and to permit persons to whom the Software is
//  furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in
//  all copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
//  THE SOFTWARE.
// </copyright>
// --------------------------------------------------------------------------------------------------------------------
namespace Microsoft.Robotics.Hardware.Robotiq
{
    using System.Runtime.Serialization;

    /// <summary>
    /// Potential faults returned by Robotiq Gripper.
    /// </summary>
    [DataContract]
    public enum RobotiqSModelFaults
    {
        /// <summary>
        /// No fault.
        /// </summary>
        [EnumMember]
        NoFault = 0x00,

        /// <summary>
        /// Action is delayed until activation completes.
        /// </summary>
        [EnumMember]
        ActionDelayedUntilActivatinCompletes = 0x05,

        /// <summary>
        /// Activation is delayed until a gripper mode change completes.
        /// </summary>
        [EnumMember]
        ActionDelayedUntilModeChangeCompletes = 0x06,

        /// <summary>
        /// Gripper must be activated before an action can be executed.
        /// </summary>
        [EnumMember]
        ActivationBitMustBeSetPriorToAction = 0x07,

        /// <summary>
        /// The communication chip is not ready.  May be booting.
        /// </summary>
        [EnumMember]
        CommunicationChipNotReady = 0x09,

        /// <summary>
        /// Interference detected on scissor for less than 20s.
        /// </summary>
        [EnumMember]
        MinorChangingModeFault = 0x0A,

        /// <summary>
        /// An automatic (emergency) release is in progress.
        /// </summary>
        [EnumMember]
        AutomaticReleaseInProgress = 0x0B,

        /// <summary>
        /// Activation fault.  Verify no interference or other error occurred.
        /// </summary>
        [EnumMember]
        ActivationFault = 0x0D,

        /// <summary>
        /// Interference detected on scissor for greater than 20s
        /// </summary>
        [EnumMember]
        MajorChangingModeFault = 0x0E,

        /// <summary>
        /// Automatic (emergency) release completed.  Gripper must be reactivated.
        /// </summary>
        [EnumMember]
        AutomaticReleaseCompleteResetRequired = 0x0F,

        /// <summary>
        /// Error reading position.  This is not a fault code supplied by RobotIQ (used for other grippers
        /// such as AX12DualGripper which currently share robotIQ data structures.
        /// </summary>
        [EnumMember]
        ErrorReadingPosition = 0x10
    }
}
